﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using formatacao;

namespace WindowsFormsApplication2
{
    class Regra5 : Regras
    {
        //public string[,] priMatriz;


        public /*string[,]*/void getMatriz(string[] lines, string[,] priMatriz, int linha)
        {
            //priMatriz = new string[lines.Length, 95];
            //priMatriz = new string[1,1];
            string troca;
            int coLines = 0; //341
            StringBuilder auxTroca = new StringBuilder();
            format formatar = new format();
            
            for (int coluna = 0; coluna < 95; coluna++)
                {
                    switch (coluna)
                    {
                        //Tipo de Registro
                        //Tamanho 1 - Posição 0
                        case 0:
                            troca = lines[linha][coluna].ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Controle Sequencial de gravação
                            //Tamanho 12 - Posição 1~12
                        case 1:
                            for (coLines = 1; coLines <= 12; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Data de Vencimento
                            //Tamanho 8 - Posição 13~20
                        case 9:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 20; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;

                        //Data de Emissão
                            //Tamanho 8 - Posição 21~28
                        case 10:
                            for (; coLines <= 28; coLines++) //Até 12 porque é regra de negócio
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;

                        //Identificador Único do Recurso (NRC)
                            //Tamanho 25 - Posição 29~53
                        case 11:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 53; coLines++) //Até 12 porque é regra de negócio
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Identificador Conta Única
                            //Tamanho 25 - Posição 54~78 
                        case 8:
                            for (; coLines <= 78; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //CNL Do Recurso em Referência
                            //Tamanho 5 - Posição 79~83
                        case 12:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 83; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //DDD
                            //Tamanho 2 - Posição 84~85
                        case 14:
                            for (; coLines <= 85; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Número do Telefone
                            //Tamanho 10 - Posição 86~95
                        case 15:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 95; coLines++) 
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Grupo das Categoria
                            //Tamanho 3 - Posição 96~98
                        case 78:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 98; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Descrição do Grupo da Categoria
                            //Tamanho 80 - Posição 99~178
                        case 81:
                            for (; coLines <= 178; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Sinal do Valor da ligação
                            //Tamanho 1 - Posição 179
                        case 73:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 179; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Base De cálculo Desconto
                            //Tamanho 13,2 - Posição 180~192
                        case 82:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 192; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca,2);
                            break;

                        //Percentual de Desconto
                            //Tamanho 5,2 - Posição 193~197
                        case 83:
                            for (; coLines <= 197; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca, 2);
                            break;

                        //Valor da ligação
                            //Tamanho 13,2 - Posição 198~210
                        case 79:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 210; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.deci(troca, 2);
                            break;

                        //Data Início do Acerto
                            //Tamamnho 8 - Posição 211~218
                        case 84:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 218; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;

                        //Hora Início do Acerto
                            //Tamanho 6 - Posição 219~224
                        case 85:
                            for (; coLines <= 224; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Data Fim do Acerto
                            //Tamanho 8 - Posição 225~232
                        case 86:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 232; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = formatar.data(troca);
                            break;

                        //Hora Fim do Acerto
                            //Tamanho 6 - Posição 233~238
                        case 87:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 238; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                        //Classe de Serviço
                            //Tamanho 5 - Posição 239~243
                        case 53:
                            for (; coLines <= 243; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break;

                      /*  //Filler
                            //Tamanho 106 - Posição 244~349 
                        case 92:
                            auxTroca.Remove(0, auxTroca.Length);

                            for (; coLines <= 349; coLines++)
                            {
                                troca = lines[linha][coLines].ToString();
                                auxTroca.Append(troca);
                            }

                            troca = auxTroca.ToString();
                            priMatriz[linha, coluna] = troca;
                            break; */

                        default:
                            priMatriz[linha, coluna] = null;
                            break;
                    }

                }
            

            //return priMatriz;
        }
    }
}